The technology described herein relates to data processing systems in which an accelerator, such as a graphics processing unit (GPU), a video accelerator or a digital signal processor, etc., acts as a common shared resource for a plurality of applications (such as games, productivity applications, browsers, etc.) and in particular to a method and system for communication in a data processing system.
Known virtualised data processing systems which use an accelerator as a common shared resource for a number of applications, e.g. running on different virtual machines (operating systems), operate in a number of different ways. In one such system involving hardware virtualisation of network interface cards in a server, the virtual machines which run the operating system for the applications are connected directly to the network interface, i.e. this connection is static, and the interface between the virtual machine and the hardware is partly virtualised in order to communicate with the accelerator.
This arrangement requires a specific device driver for the type of network interface being used, for the initialisation of, and subsequent communication with, the interface. In another such system a graphics accelerator may be partly virtualised by using a specific graphics driver that captures the commands from one virtual machine (operating system) to the graphics acceleration application programming interface (API), e.g. using DirectX or OpenGL, and then forwards them to a different virtual machine which has access to the graphics accelerator such that the commands can be executed. Clearly there is a large drawback in this arrangement because of the transfer of commands between the two operating systems (virtual machines), which is a complex arrangement and comes at a large processing cost.
In a third such system, a graphics accelerator is split into a fixed number of partitions, with each partition being assigned directly to a virtual machine, i.e. there a static connection as with the first example. An example of such a product is NVIDIA GRID.
The static connection between virtual machines and their interfaces to the accelerator, and the need to use specific drivers, in these known systems, means that existing virtualised systems are not very flexible, for example in terms of being able to dynamically manage the virtual machine connections to the accelerator.